package com.ruoyi.system.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.system.domain.EnvDataPrediction;

/**
 * 环境数据预测服务接口
 */
public interface IEnvDataPredictionService 
{
    /**
     * 查询环境数据预测
     * 
     * @param predictionId 预测ID
     * @return 环境数据预测信息
     */
    public EnvDataPrediction selectEnvDataPredictionById(Long predictionId);

    /**
     * 查询环境数据预测列表
     * 
     * @param envDataPrediction 环境数据预测信息
     * @return 环境数据预测集合
     */
    public List<EnvDataPrediction> selectEnvDataPredictionList(EnvDataPrediction envDataPrediction);

    /**
     * 新增环境数据预测
     * 
     * @param envDataPrediction 环境数据预测信息
     * @return 结果
     */
    public int insertEnvDataPrediction(EnvDataPrediction envDataPrediction);

    /**
     * 修改环境数据预测
     * 
     * @param envDataPrediction 环境数据预测信息
     * @return 结果
     */
    public int updateEnvDataPrediction(EnvDataPrediction envDataPrediction);

    /**
     * 批量删除环境数据预测
     * 
     * @param predictionIds 需要删除的预测ID
     * @return 结果
     */
    public int deleteEnvDataPredictionByIds(Long[] predictionIds);

    /**
     * 删除环境数据预测信息
     * 
     * @param predictionId 预测ID
     * @return 结果
     */
    public int deleteEnvDataPredictionById(Long predictionId);
    
    /**
     * 生成空气质量预测数据
     * 
     * @param pointId 监测点ID
     * @param indicatorName 指标名称 (aqi, pm25, pm10, so2, no2, co, o3)
     * @param days 预测天数
     * @return 预测结果
     */
    public EnvDataPrediction generateAirQualityPrediction(Long pointId, String indicatorName, Integer days);
    
    /**
     * 生成水质预测数据
     * 
     * @param pointId 监测点ID
     * @param indicatorName 指标名称
     * @param days 预测天数
     * @return 预测结果
     */
    public EnvDataPrediction generateWaterQualityPrediction(Long pointId, String indicatorName, Integer days);
    
    /**
     * 生成噪声预测数据
     * 
     * @param pointId 监测点ID
     * @param days 预测天数
     * @return 预测结果
     */
    public EnvDataPrediction generateNoisePrediction(Long pointId, Integer days);
    
    /**
     * 获取预测趋势数据
     * 
     * @param predictionId 预测ID
     * @return 预测趋势数据
     */
    public Map<String, Object> getPredictionTrendData(Long predictionId);
    
    /**
     * 获取预测与实际对比数据
     * 
     * @param predictionId 预测ID
     * @return 预测与实际对比数据
     */
    public Map<String, Object> getPredictionComparisonData(Long predictionId);
}